package com.zhongfl.crm.service.impl.boss;

import com.zhongfl.crm.service.boss.Url2FileService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * Url2FileService 服务类
 *
 * @author tiantian
 * @date 2018/7/16 21:48
 */
@Service
@Slf4j
public class Url2FileServiceImpl implements Url2FileService {

    //@Value("${file.temp.path}")
    //private String tempPath;

    //private String SAVE_PATH = this.getClass().getClassLoader().getResource("./").getPath() + "static/temp/";
    //
    ///**
    // * 从网络Url中下载文件
    // *
    // * @param urlStr URL地址
    // * @throws IOException
    // */
    //@Override
    //public File downloadFromUrl(String urlStr) {
    //    File file = this.saveFile(urlStr);
    //
    //    log.info("文件名：{}",file.getName());
    //    //log.info("文件：");
    //    return file;
    //}
    //
    //private File saveFile(String urlStr) {
    //    try {
    //        return this.saveFileFromConnection(urlStr);
    //    } catch (Exception e) {
    //        log.info("保存临时文件失败！");
    //    }
    //    return null;
    //}
    //
    //private File saveFileFromConnection(String urlStr) throws IOException {
    //    // 建立链接
    //    URL httpUrl = new URL(urlStr);
    //    HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
    //    //设置超时间为3秒
    //    conn.setConnectTimeout(3 * 1000);
    //    //防止屏蔽程序抓取而返回403错误
    //    conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
    //    //获取网络输入流
    //    InputStream inputStream = conn.getInputStream();
    //    byte[] bytes = this.readInputStream(inputStream);
    //    File file = this.getFile();
    //
    //    FileOutputStream fos = new FileOutputStream(file);
    //    fos.write(bytes);
    //    fos.close();
    //    inputStream.close();
    //
    //    conn.disconnect();
    //    return file;
    //}
    //
    //private byte[] readInputStream(InputStream inputStream) throws IOException {
    //    byte[] buffer = new byte[1024];
    //    int len = 0;
    //    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    //    while ((len = inputStream.read(buffer)) != -1) {
    //        bos.write(buffer, 0, len);
    //    }
    //    bos.close();
    //    return bos.toByteArray();
    //}
    //
    //private String getFileName() {
    //    return UUID.randomUUID().toString().replace("-", "") + ".jpg";
    //}
    //
    //private File getFile() {
    //    File dir = new File(SAVE_PATH);
    //    if (!dir.exists()) {
    //        dir.mkdirs();
    //    }
    //    return new File(dir + File.separator + this.getFileName());
    //}
    //
    //@Override
    //public void cleanTempFile() {
    //    File file = new File(SAVE_PATH);
    //    if (!file.exists()) {
    //        log.info("路径不存在！");
    //        return;
    //    }
    //    if (!file.isDirectory()) {
    //        log.info("路径非文件夹！");
    //        return;
    //    }
    //    String[] tempList = file.list();
    //    if (tempList != null && tempList.length != 0) {
    //        File temp;
    //        for (int i = 0; i < tempList.length; i++) {
    //            if (SAVE_PATH.endsWith(File.separator)) {
    //                temp = new File(SAVE_PATH + tempList[i]);
    //            } else {
    //                temp = new File(SAVE_PATH + File.separator + tempList[i]);
    //            }
    //            temp.delete();
    //        }
    //    }
    //}

    //public void delTempFile(String path) {
    //    boolean flag = false;
    //    File file = new File(path);
    //    if (!file.exists()) {
    //        return ;
    //    }
    //    if (!file.isDirectory()) {
    //        return ;
    //    }
    //    String[] tempList = file.list();
    //
    //    File temp ;
    //    for (int i = 0; i < tempList.length; i++) {
    //        if (path.endsWith(File.separator)) {
    //            temp = new File(path + tempList[i]);
    //        } else {
    //            temp = new File(path + File.separator + tempList[i]);
    //        }
    //        if (temp.isFile()) {
    //            temp.delete();
    //        }
    //        if (temp.isDirectory()) {
    //            delTempFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
    //            delFolder(path + "/" + tempList[i]);//再删除空文件夹
    //            flag = true;
    //        }
    //    }
    //}
    //
    //private void delFolder(String folderPath) {
    //    try {
    //        delTempFile(folderPath); //删除完里面所有内容
    //        String filePath = folderPath;
    //        java.io.File myFilePath = new java.io.File(filePath);
    //        myFilePath.delete(); //删除空文件夹
    //    } catch (Exception e) {
    //        e.printStackTrace();
    //    }
    //}

    @Override
    public InputStream getFileInputStreamFromUrl(String urlStr) throws IOException {
        if (StringUtils.isEmpty(urlStr)) {
            return null;
        }
        // 建立链接
        URL httpUrl = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
        //设置超时间为3秒
        conn.setConnectTimeout(3 * 1000);
        //防止屏蔽程序抓取而返回403错误
        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        //获取网络输入流
        conn.disconnect();
        return conn.getInputStream();
    }
}
